package com.empsys.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

/**
 * @author wzm
 * @create 2023-12-13 11:39
 * project_name:web2310
 * @Description
 */
//生成和解析JWT工具类
public class JwtUtils {
    private static String key = "hxzy";//秘钥
    private static Long time = 3600000L;//有效时间

    /**
     * 生成jwt令牌
     * @param claims 携带第二部分载荷
     * @return 生成jwt字符串
     */
    public static String getJwt(Map<String,Object> claims){
       return Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, key)//设置签名算法+秘钥
                .setClaims(claims)//自定义需要携带的数据载荷
                .setExpiration(new Date(System.currentTimeMillis() + time))//设置jwt的有效期
                .compact();
    }


    /**
     * 解析jwt
     * @param jwt jwt令牌字符串
     * @return 解析后的载荷 第二部分存储的内容
     */
    public static Claims parseJwt(String jwt){
       return Jwts.parser()
                .setSigningKey(key)//用哪个签名秘钥来解析 （要和生成时一样）
                .parseClaimsJws(jwt)
                .getBody();
    }
}
